static int fuse_fat32_write(const char *path, char *buf, size_t size, off_t offset){

	size_t respuesta;
	struct tDirEntry archivo;
	uint32_t nroCluster;;
	uint32_t cantClustersAct;
	uint32_t cantClustersNueva;
	uint32_t ultCluster;
	uint32_t *ptr;
	uint32_t primerCluster;
	uint16_t cant;
	char *buffer;
	uint32_t cluster;
	char *bufBloque;
	char idBloque;
	
	respuesta = size;

	if (obtenerInfoArchivo(path, &archivo))
		return -ENOENT;

	nroCluster = convertBytesToClusters(offset);
	cantClustersAct = convertBytesToClusters(archivo.filesize);
	cantClustersNueva = convertBytesToClusters(offset + size);
	
	if (cantClustersNueva > cantClustersAct){
		ultClusterArch(archivo.startFileCluster, &ultCluster);
		vectClustersLibres = getXFreeClusters(bmp, cantClustersNueva - cantClustersAct);
		rmFreeClusterChain(&vectSectoresLibres);
	}
	
	if (offset + size > archivo.filesize)
		actualizarEnFAT(offset + size); /*Si es la misma funcion que se llama al final de truncate, pegarle a prietto y avisarle a dano para que cambie unas cosas*/

	for(i = 0, ptr = ptrFAT + archivo.startFileCluster; i < nroCluster; i++){

		if (i == nroCluster - 1)
			primerCluster = *ptrFAT;

		ptr = ptrFAT + *ptrFAT;
	}

	inicio = TAM_SECTOR * TAM_CLUSTER * (1 - nroCluster) - offset;

	for (cluster = primerCluster, buffer = buf; size != 0; size -= cant){

		getBloque(cluster, &bufBloque, &idBloque);

		if (inicio + size > TAM_CLUSTER * TAM_SECTOR)
			cant = TAM_CLUSTER * TAM_SECTOR - inicio;

		else if (size >= TAM_CLUSTER * TAM_SECTOR)
			cant = TAM_CLUSTER * TAM_SECTOR;

		else
			cant = size;
			
		memcpy(idBuff + inicio, buf, cant);
		
		buf += cant;
		
		inicio = 0;
		
		liberarIdBuffer(idBloque);
	}

	return respuesta;
}